From 3123fe0fc48c030f8b3c785741df041210923942 Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Tue, 15 Jul 2008 17:59:31 +0100 Subject: [PATCH] fs-backend: Fix freelist implementation Signed-off-by: Samuel Thibault --- tools/fs-back/fs-backend.c | 4 ++-- tools/fs-back/fs-backend.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/fs-back/fs-backend.c b/tools/fs-back/fs-backend.c index fd5ba2b46b..71518f0aa2 100644 --- a/tools/fs-back/fs-backend.c +++ b/tools/fs-back/fs-backend.c @@ -110,9 +110,9 @@ void allocate_request_array(struct mount *mount) unsigned short *freelist; requests = malloc(sizeof(struct fs_request) *nr_entries); - freelist = malloc(sizeof(unsigned short) * nr_entries); + freelist = malloc(sizeof(unsigned short) * (nr_entries + 1)); memset(requests, 0, sizeof(struct fs_request) * nr_entries); - memset(freelist, 0, sizeof(unsigned short) * nr_entries); + memset(freelist, 0, sizeof(unsigned short) * (nr_entries + 1)); for(i=0; i< nr_entries; i++) { requests[i].active = 0; diff --git a/tools/fs-back/fs-backend.h b/tools/fs-back/fs-backend.h index 9150d214a5..bf54dae531 100644 --- a/tools/fs-back/fs-backend.h +++ b/tools/fs-back/fs-backend.h @@ -72,14 +72,14 @@ extern struct fs_op *fsops[]; static inline void add_id_to_freelist(unsigned int id,unsigned short* freelist) { - freelist[id] = freelist[0]; + freelist[id + 1] = freelist[0]; freelist[0] = id; } static inline unsigned short get_id_from_freelist(unsigned short* freelist) { unsigned int id = freelist[0]; - freelist[0] = freelist[id]; + freelist[0] = freelist[id + 1]; return id; } -- 2.30.2